YES(O(1),O(n^1)) We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict Trs: { app(nil(), YS) -> YS , app(cons(X), YS) -> cons(X) , from(X) -> cons(X) , zWadr(XS, nil()) -> nil() , zWadr(nil(), YS) -> nil() , zWadr(cons(X), cons(Y)) -> cons(app(Y, cons(X))) , prefix(L) -> cons(nil()) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We use the processor 'Small Polynomial Path Order (PS,1-bounded)' to orient following rules strictly. Trs: { app(nil(), YS) -> YS , app(cons(X), YS) -> cons(X) , from(X) -> cons(X) , zWadr(XS, nil()) -> nil() , zWadr(nil(), YS) -> nil() , zWadr(cons(X), cons(Y)) -> cons(app(Y, cons(X))) , prefix(L) -> cons(nil()) } The induced complexity on above rules (modulo remaining rules) is YES(?,O(n^1)) . These rules are moved into the corresponding weak component(s). Sub-proof: ---------- The input was oriented with the instance of 'Small Polynomial Path Order (PS,1-bounded)' as induced by the safe mapping safe(app) = {1, 2}, safe(nil) = {}, safe(cons) = {1}, safe(from) = {}, safe(zWadr) = {}, safe(prefix) = {1} and precedence app ~ zWadr, from ~ prefix . Following symbols are considered recursive: {app, zWadr} The recursion depth is 1. For your convenience, here are the satisfied ordering constraints: app(; nil(), YS) > YS app(; cons(; X), YS) > cons(; X) from(X;) > cons(; X) zWadr(XS, nil();) > nil() zWadr(nil(), YS;) > nil() zWadr(cons(; X), cons(; Y);) > cons(; app(; Y, cons(; X))) prefix(; L) > cons(; nil()) We return to the main proof. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak Trs: { app(nil(), YS) -> YS , app(cons(X), YS) -> cons(X) , from(X) -> cons(X) , zWadr(XS, nil()) -> nil() , zWadr(nil(), YS) -> nil() , zWadr(cons(X), cons(Y)) -> cons(app(Y, cons(X))) , prefix(L) -> cons(nil()) } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) Empty rules are trivially bounded Hurray, we answered YES(O(1),O(n^1))